<head>
  <style> body { margin: 0; } </style>

  <script type="importmap">{ "imports": {
    "react": "https://esm.sh/react",
    "react-dom": "https://esm.sh/react-dom/client"
  }}</script>

<!--  <script type="module">import * as React from 'react'; window.React = React;</script>-->
<!--  <script src="../../src/packages/react-force-graph-3d/dist/react-force-graph-3d.js" defer></script>-->
</head>

<body>
  <div id="graph"></div>

  <script src="//unpkg.com/@babel/standalone"></script>
  <script type="text/jsx" data-type="module">
    import ForceGraph3D from 'https://esm.sh/react-force-graph-3d?external=react';
    import React, { useEffect, useRef } from 'react';
    import { createRoot } from 'react-dom';
    import { genRandomTree } from '../datasets/random-data.js';

    const data = genRandomTree();
    const distance = 1400;

    const CameraOrbit = () => {
      const fgRef = useRef();

      useEffect(() => {
        fgRef.current.cameraPosition({ z: distance });

        // camera orbit
        let angle = 0;
        setInterval(() => {
          fgRef.current.cameraPosition({
            x: distance * Math.sin(angle),
            z: distance * Math.cos(angle)
          });
          angle += Math.PI / 300;
        }, 10);
      }, []);

      return <ForceGraph3D
        ref={fgRef}
        graphData={data}
        enableNodeDrag={false}
        enableNavigationControls={false}
        showNavInfo={false}
      />;
    };

    createRoot(document.getElementById('graph'))
      .render(<CameraOrbit />);
  </script>
</body>